import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:ducafe_ui_core/ducafe_ui_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_demo/routers/app_pages.dart';
import 'package:flutter_demo/routers/names.dart';
import 'package:flutter_demo/services/config.dart';
import 'package:flutter_demo/style/theme.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh_flutter3/pull_to_refresh_flutter3.dart';

import 'global.dart';
import 'i18n/translation.dart';

Future<void> main() async{
  await Global.init();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(
      designSize: const Size(414, 896), // 设计稿中设备的尺寸(单位随意,建议dp,但在使用过程中必须保持一致)
      splitScreenMode: false, // 支持分屏尺寸
      minTextAdapt: false, // 是否根据宽度/高度中的最小值适配文字
      builder: (context,child){
         return AdaptiveTheme(//自定义主题
             light: AppTheme.light,
             dark: AppTheme.dark,
             initial: ConfigService.to.themeMode,//设置默认主题为light

             builder: (theme,darkTheme)=> RefreshConfiguration(//下拉刷新控件
               headerBuilder: () => const ClassicHeader(), // 自定义刷新头部
               footerBuilder: () => const ClassicFooter(), // 自定义刷新尾部
               hideFooterWhenNotFull: true, // 当列表不满一页时,是否隐藏刷新尾部
               headerTriggerDistance: 80, // 触发刷新的距离
               maxOverScrollExtent: 100, // 最大的拖动距离
               footerTriggerDistance: 150, // 触发加载的距离


               child: GetMaterialApp(
               title: "demo",
               theme: theme,
               darkTheme: darkTheme,
               initialRoute: ConfigService.to.isAlreadyOpen ? RouteNames.systemHome : RouteNames.systemSplash ,
               getPages: AppPages.list,
               // 多语言
               translations: Translation(), // 你的翻译
               supportedLocales: Translation.supportedLocales, // 支持的语言种类
               locale: ConfigService.to.locale, // 当前语言种类
               fallbackLocale: Translation.fallbackLocale, // 默认语言种类，如果切换的语言不存在，也会使用这个
               localizationsDelegates:Translation.localizationsDelegates, // 代理
               // 隐藏 debug 标志
               debugShowCheckedModeBanner: true,

               builder: (context,widget){
                 // EasyLoading 初始化
                 widget = EasyLoading.init()(context, widget);

                 // 不随系统字体缩放比例
                 return MediaQuery(
                   data: MediaQuery.of(context).copyWith(textScaler: const TextScaler.linear(1.0)),
                   child: widget,
                 );
               },
             ),
             ),
         );
      },
    );
  }
}
